#include "mainscene.h"
#include <QPainter>

MainScene::MainScene(QWidget *parent)
    : QWidget(parent)
{
    initScene();
}

MainScene::~MainScene()
{
}

void MainScene::initScene()
{
    setFixedSize(GAME_WIDTH,GAME_HEIGHT);
    setWindowTitle(GAME_TITLE);
    //设置图标
    setWindowIcon(QIcon(GAME_ICON));//加头文件 #include <QIcon>

    //定时器设置
    m_Timer.setInterval(GAME_RATE);
}

void MainScene::playGame()
{
    //启动定时器
    m_Timer.start();

    //监听定时器
    connect(&m_Timer,&QTimer::timeout,[=]()
    {
        //更新游戏中元素的坐标
        updatePosition();
        //重新绘制
        update();
    });
}


void MainScene::updatePosition()
{
    //更新地图坐标
    m_map.mapPosition();
}

void MainScene::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);

    //绘制地图
    painter.drawPixmap(0,m_map.m_map1_posY,m_map.m_map1);
    painter.drawPixmap(0,m_map.m_map2_posY,m_map.m_map2);

    //绘制英雄
    painter.drawPixmap(m_hero.m_X,m_hero.m_Y,m_hero.m_Plane);
}

void MainScene::mouseMoveEvent(QMouseEvent* event)
{
    int x = event->x() - m_hero.m_Rect.width()* 0.5f;//鼠标位置 - 飞机矩形的一半
    int y = event->y() - m_hero.m_Rect.height() * 0.5f;
    //边界检测
    if(x <= 0)
    {
        x = 0;
    }
    if(x >= GAME_WIDTH - m_hero.m_Rect.width())
    {
        x = GAME_WIDTH - m_hero.m_Rect.width();
    }
    if(y <= 0)
    {
        y = 0;
    }
    if(y >= GAME_HEIGHT - m_hero.m_Rect.height())
    {
        y = GAME_HEIGHT - m_hero.m_Rect.height();
    }
    m_hero.setPosition(x,y);
}
